Git命令使用总结

来源:互联网 发布:midi钢琴软件 编辑:程序博客网 时间:2024/06/05 18:42

对于版本控制而言,现在Git已经非常普遍了,我现在接触的公司,只要源码过大,基本都用Git了,当然SVN的使用也还常见,小型项目用的比较多。

我工作这几年,最开始用过ClearCase。。。现在基本全忘了。

后来接触最多的就是Git和SVN了,一般来说,大公司基本都用Git,且有专门的人来做版本控制,小公司就得靠开发人员自己搭建了。

对于我自己而言,因为项目原因,Git也不算用的非常熟的。

最开始偶然用了几次,发觉Git确实非常不错,它的分支管理,真的非常棒棒哒。

真正对Git有个比较熟练的掌握,还是专门通读了Pro Git 这本书,配合做了些小练习,加上工作中的使用

下面是自己总结的Git命令:

1. git config --global user.name "John Doe"// 配置username
2. git config --global user.email johndoe@example.com//配置email
3. git config --global core.editor emacs //配置文本编辑器
4. git config --global merge.tool vimdiff //配置差异分析工具
5. git config --list // 查看配置信息
6. git help // 获取帮助
7. git add *.c // 添加工作区的文件到暂存区
8. git add README // 添加工作区的文件到暂存区
9. git commit -m ‘initial project version’ // 提交暂存区的文件到本地仓库
10. git clone git://github.com/schacon/grit.git  mygrit// 拉取远程仓库到本地
11. git status //当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit)的文件
12. git diff // 工作区和暂存区的差异
13. git log 文件或者目录  // 查看某个文件或者目录的git提交记录
14. git diff --cached // 暂存区和git仓库的差异
15. rm和git rm   //rm删除工作目录下的,git rm 删除暂存区的
16. git log   // 查看提交信息
17. git remote -v // 查看远程仓库
18. git fetch <远程主机名> // 将某个远程主机的所有分支更新,全部取回本地。
19. git fetch <远程主机名> <分支名> // 将某个远程主机的指定分支更新,取回本地。所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取

20. git branch -d 分支名  //删除分支
21. git checkout -b dev origin/dev //checkout远程分支dev到本地,在本地起名为dev分支,并切换到本地分支dev
22. git mergetool // 解决冲突
23. git clone --bare my_project my_project.git  //现存仓库导出为纯仓库
24. git init --bare --shared // 建立仓库
25. git log origin/featureA ^featureA // 查看两个分支的差异log
26. git rebase -i
27. git format-patch -M origin/master  //-M 选项允许Git 检查是否有对文件重命名的提交
28. git show commit值 查看某个commit的提交记录
29. git log origin/master..HEAD      //显示在你当前分支上二不在远程origin上的提交
30. git stash  // 储藏
31. git pull的默认行为是git fetch + git merge, 
     git pull --rebase则是git fetch + git rebase.
32. git log -p -2 -stat // -p显示每次提交的差异 -2只显示两次提交,--stat 显示简要的增改行数统计
33. git checkout -- xxx // 取消工作区的修改
git reset HEAD filename 从暂存区中移除文件
git reset –hard HEAD~3 会将最新的3次提交全部重置,就像没有提交过一样。
git reset –hard [commit id] (38679ed709fd0a3767b79b93d0fba5bb8dd235f8) 回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本
git reset HEAD xxx // 取消暂存 reset是指将当前head的内容重置
git reset -soft :取消了commit
git reset -mixed(默认) :取消了commit ,取消了add
git reset -hard :取消了commit ,取消了add,取消源文件修改
git revert HEAD~1 ,那么会撤销倒数第二次的提交结果。而倒数第一次的提交记录,仍然在。
33. git branch test//新建本地分支
33. git checkout -b iss53//新建并切换到该分支
34. git merge hotfix //合并分支hotfix到master
34. git fetch origin  // 同步,只是同步到了本地,还未与本地分支合并
git push 远程仓库名 分支名   // 推送本地分支到远程
git push 远程仓库名 本地分支名:远程分支名  // 推送本地分支到远程,并重命名
34. git pull origin master
git checkout -b [分支名] [远程仓库名]/[分支名]  // 将远程分支checkout到本地,可以重命名
git checkout -b --track [远程仓库名]/[分支名] // 效果同上行,只是没有重命名


附1: 关于HEAD^ 和 HEAD~
G   H   I   J
\ /     \ /
 D   E   F
  \  |  / \
   \ | /    |
    \|/     |
    B      C
     \    /
      \ /
       A
A =      = A^0
B = A^   = A^1     = A~1
C = A^2  = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2  = B^^2    = A^^^2  = A~2^2
I = F^   = B^3^    = A^^3^
J = F^2  = B^3^2   = A^^3^2


附2:发几个自己初期使用Git时想到的几个关于版本控制的问题:(答案在后续的博客中更新)

1. 怎么针对自己的项目工程建立repo管理多个git仓库?

注:因为对于git,我们一般来说自己作为用户使用的比较多,不会过多去考虑搭建版本控制仓库服务器建立的问题,所以提出了此问题。

2. 使用git建立远程仓库,让别人能够通过git clone下来?

注:这里不包含上传github的方式,指的是局域网内的搭建。

3. 如何使用gitolite搭建服务器?


0 0