前言
其实很早以前就知道git了,但是之前真的只是知道一些皮毛。现在想想确实挺后悔当时没有好好学git的。由于工作的最近频繁使用git进行代码的版本控制,学习到了不少东西,在此记录一下。
工作区域
初始化Git并上传到Github
git init
git add * //也可以使用git add -u 添加已经跟踪的文件,或者git add 指定特定目录。
git commit -m "first commit" // 使用 git commit -s "多行commit"
git remote add origin https://github.com/hanxinyumeng/myNotes.git
git push -u origin master
保存账号和密码
git config --global credential.helper store
git pull /git push (这里需要输入用户名和密码,以后就不用啦)
添加新的更改获取新的文件
git add *
git commit -m "备注"
git push //git push --set-upstream origin test 推送到远程分支,并且跟踪远程分支origin test
创建分支
git branch new_branch_name
git checkout -b new_branch_name //创建分支,并切换到新分支上
查看分支
git branch -a //显示所有分支
git branch -vva //显示所有分支及详细信息
git branch -u origin test //为当前分支设置远程分支
切换分支及相关其他操作
git checkout branch_name //切换到指定分支
git checkout branch_name file_name //从其他分支拉取文件到当前分支
git checkout -b new_branch_name -t origin test //创建当前分支并跟踪到远程分支origin test
查看日志
git log //显示所有的log信息
git log -p -2 //显示最近两次的log信息,及diff内容
git log --author=“author” // 显示某个作者的log内容
git show commit_id //显示某次提交的具体修改
git blame -L 222,227 file_name //查看文件file_name中222行到227行代码提交的日志
删除文件及分支
- 删除文件:
git rm test.txt //删除本地文件
git rm folder_name -r -f //删除本地文件夹
git commit -m "delete file" //同步到分支
git push origin test //同步到远程分支
- 删除分支:
git branch -d branch_name // 删除本地分支branch_name
git push origin --delete branch_name // 删除远程branch_name分支
diff命令总结
git diff //比较工作目录和暂存区之间的差别
git diff branch1_name branch2_name //比较两个分支最新提交的区别
git diff HEAD //比较工作区与最新本地版本库之间的区别
git diff commit_id //比较工作区与指定的commit_id之间的区别
打补丁
git diff > patch_name // 将差别生成一个补丁文件
git apply patch_name //在当前工作区应用补丁
- 打补丁时经常会遇见冲突的问题,所以可以在应用补丁的时候先试用
git apply --check patch_name
检查一下,如果没有任何输出,说明可以顺利试用这个path。如果有冲突,也可以先使用git apply patch_name
然后再去相应冲突文件解冲突,解冲突后再提交。
版本回退
* 使用git log 查看commit id
* 使用 git reset --hard 加commit id
git fetch
git fetch 与git pull 最大的不同是: git pull 拉下代码后会与 当前分支进行合并,而git fetch 不会进行合并。
git pull 等价于以下两步:
经命令中的 pull 换成 fetch, 执行之…
git merge FETCH_HEAD
补充
- git pull :将服务器代码拉取到本地分支,不会覆盖改动的代码(只有当服务器与本地同时改动同一部分的代码时才会提示冲突)。
- git stash :将本地改动暂时移除(保存 在git的缓存);
git stash list :查看分支的git缓存;
git stash pop :将git缓存的代码改动添加到本地。
- git cherry-pick可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry-pick了。详情请看 详细教程。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!