Git详解之四:服务器上的Git http://blog.jobbole.com/25944/
1. git init .初始化本地仓库
git add . 添加所有本地文件到本地仓库中
2. git commit:提交当前工作空间的修改内容,类似于SVN的commit命令,例如'git commit -m story #3, add user model',提交的时候必须用-m来输入一条提交信息
常用 git commit -a -m "注释内容"
3. git push:将本地commit的代码更新到远程版本库中,例如'git push origin'就会将本地的代码更新到名为orgin的远程版本库中4 .git log:查看历史日志5. git revert:还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值上面的命令几乎都是每个版本控制工具所公有的,下面就开始尝试一下Git独有的一些命令:6. git branch:对分支的增、删、查等操作,例如'git branch new_branch'会从当前的工作版本创建一个叫做new_branch的新分支,'git branch -D new_branch'就会强制删除叫做new_branch的分支,'git branch'就会列出本地所有的分支7. git checkout:Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚
8.一次完整的git reset --hard 645f901e30d408a7622e92703e3f34acf37faada
<span style="font-size:18px;">1.初始版本
$ git log
commit 645f901e30d408a7622e92703e3f34acf37faada
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 16:35:41 2012 +0800
初始化
2.修改一个文件,增添一个文件后签入
$ git commit -a -m "commit 1"
[master a042a2a] commit 1
Committer: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 files changed, 1 insertions(+), 0 deletions(-)
3.当前版本
$ git log
commit a042a2a6a60d09165cf0a5f34242569435a4db48
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 17:13:29 2012 +0800
commit 1
commit 645f901e30d408a7622e92703e3f34acf37faada
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 16:35:41 2012 +0800
初始化
4.恢复成指定版本。修改的文件恢复原样,添加的文件删除了。
$ git reset --hard 645f901e30d408a7622e92703e3f34acf37faada
HEAD is now at 645f901 初始化
5.垃圾箱里有最近做的reset更改,默认30天清除
$ git reflog
645f901 HEAD@{0}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
a042a2a HEAD@{1}: commit: commit 1
645f901 HEAD@{2}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
34f2bf7 HEAD@{3}: commit: commit 2
645f901 HEAD@{4}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
c4ca02b HEAD@{5}: commit: commit 2
645f901 HEAD@{6}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
4124aa9 HEAD@{7}: commit: 重新测试
645f901 HEAD@{8}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
869b9de HEAD@{9}: 869b9de1ae95b8b7c0cfac45a065fddb41335093: updating HEAD
79b5972 HEAD@{10}: commit: 第二次commit add file
869b9de HEAD@{11}: commit: 第一次commit file
645f901 HEAD@{12}: commit (initial): 初始化
</span>
9. revert命令, 恢复指定版本经常提示.idea文件夹有改动,提交失败。解决方法,全局忽略指定文件夹或本工程目录下添加 .gitignore文件忽略指定文件夹及文件
如我的 .gitignore 内容为
<span style="font-size:18px;">*.sh
.idea
*.swp
*.iml
</span>
再次恢复指定版本就成功了<span style="font-size:18px;">git revert commit指定版本</span>
10.检查是否有文件未提交git status
<span style="font-size:18px;">$ git status
# On branch cmcc
nothing to commit (working directory clean)</span>
11.解决cygwin中提交中文文件乱码问题
<span style="font-size:18px;">git config --global core.quotepath false</span>
12. git branch命令
<span style="font-size:18px;">git branch <new_branch_name> 建立本地 local branch
git branch -m <old_name> <new_name> 改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)
git branch 列出目前有那些 branch 以及目前在那個 branch
git checkout <branch_name> 切換 branch (注意到如果你有檔案修改了卻還沒 commit,會不能切換 branch,解法稍後會談)
git checkout -b <new_branch_name> (<from_branch_name>) 本地建立 branch 並立即 checkout 切換過去
git branch -d <branch_name> 刪除 local branch
開 Branch 最大的好處除了可以不影響 stable 和其他分支版本的開發,另一個超棒的地方是”你可以決定 Merge 的方式”</span>
7. git checkout:Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚
8.一次完整的git reset --hard 645f901e30d408a7622e92703e3f34acf37faada
<span style="font-size:18px;">1.初始版本
$ git log
commit 645f901e30d408a7622e92703e3f34acf37faada
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 16:35:41 2012 +0800
初始化
2.修改一个文件,增添一个文件后签入
$ git commit -a -m "commit 1"
[master a042a2a] commit 1
Committer: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 files changed, 1 insertions(+), 0 deletions(-)
3.当前版本
$ git log
commit a042a2a6a60d09165cf0a5f34242569435a4db48
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 17:13:29 2012 +0800
commit 1
commit 645f901e30d408a7622e92703e3f34acf37faada
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 16:35:41 2012 +0800
初始化
4.恢复成指定版本。修改的文件恢复原样,添加的文件删除了。
$ git reset --hard 645f901e30d408a7622e92703e3f34acf37faada
HEAD is now at 645f901 初始化
5.垃圾箱里有最近做的reset更改,默认30天清除
$ git reflog
645f901 HEAD@{0}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
a042a2a HEAD@{1}: commit: commit 1
645f901 HEAD@{2}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
34f2bf7 HEAD@{3}: commit: commit 2
645f901 HEAD@{4}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
c4ca02b HEAD@{5}: commit: commit 2
645f901 HEAD@{6}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
4124aa9 HEAD@{7}: commit: 重新测试
645f901 HEAD@{8}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
869b9de HEAD@{9}: 869b9de1ae95b8b7c0cfac45a065fddb41335093: updating HEAD
79b5972 HEAD@{10}: commit: 第二次commit add file
869b9de HEAD@{11}: commit: 第一次commit file
645f901 HEAD@{12}: commit (initial): 初始化
</span>
9. revert命令, 恢复指定版本经常提示.idea文件夹有改动,提交失败。解决方法,全局忽略指定文件夹或本工程目录下添加 .gitignore文件忽略指定文件夹及文件
如我的 .gitignore 内容为
<span style="font-size:18px;">*.sh
.idea
*.swp
*.iml
</span>
再次恢复指定版本就成功了
<span style="font-size:18px;">git revert commit指定版本</span>
10.检查是否有文件未提交git status
<span style="font-size:18px;">$ git status
# On branch cmcc
nothing to commit (working directory clean)</span>
11.解决cygwin中提交中文文件乱码问题
<span style="font-size:18px;">git config --global core.quotepath false</span>
12. git branch命令
<span style="font-size:18px;">git branch <new_branch_name> 建立本地 local branch
git branch -m <old_name> <new_name> 改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)
git branch 列出目前有那些 branch 以及目前在那個 branch
git checkout <branch_name> 切換 branch (注意到如果你有檔案修改了卻還沒 commit,會不能切換 branch,解法稍後會談)
git checkout -b <new_branch_name> (<from_branch_name>) 本地建立 branch 並立即 checkout 切換過去
git branch -d <branch_name> 刪除 local branch
開 Branch 最大的好處除了可以不影響 stable 和其他分支版本的開發,另一個超棒的地方是”你可以決定 Merge 的方式”</span>
2. git commit:
提交当前工作空间的修改内容,类似于SVN的commit命令,例如'git commit -m story #3, add user model',提交的时候必须用-m来输入一条提交信息
常用 git commit -a -m "注释内容"3. git push:
将本地commit的代码更新到远程版本库中,例如'git push origin'就会将本地的代码更新到名为orgin的远程版本库中
$ git push origin test:master // 提交本地test分支作为远程的master分支
$ git push origin test:test // 提交本地test分支作为远程的test分支
4 .git log:
查看历史日志
5. git revert:
还原一个版本的修改,必须提供一个具体的Git版本号,例如
'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',
Git的版本号都是生成的一个哈希值上面的命令几乎都是每个版本控制工具所公有的,下面就开始尝试一下Git独有的一些命令:
6. git branch:
对分支的增、删、查等操作,例如'git branch new_branch'会从当前的工作版本创建一个叫做new_branch的新分支,'git branch -D new_branch'就会强制删除叫做new_branch的分支,'git branch'就会列出本地所有的分支
7. git checkout:
Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚
8.reset
一次完整的
git reset --hard 645f901e30d408a7622e92703e3f34acf37faada
<span style="font-size:18px;">1.初始版本
$ git log
commit 645f901e30d408a7622e92703e3f34acf37faada
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 16:35:41 2012 +0800
初始化
2.修改一个文件,增添一个文件后签入
$ git commit -a -m "commit 1"
[master a042a2a] commit 1
Committer: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 files changed, 1 insertions(+), 0 deletions(-)
3.当前版本
$ git log
commit a042a2a6a60d09165cf0a5f34242569435a4db48
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 17:13:29 2012 +0800
commit 1
commit 645f901e30d408a7622e92703e3f34acf37faada
Author: U-pdh-PC\pdh <pdh@pdh-PC.(none)>
Date: Wed Sep 26 16:35:41 2012 +0800
初始化
4.恢复成指定版本。修改的文件恢复原样,添加的文件删除了。
$ git reset --hard 645f901e30d408a7622e92703e3f34acf37faada
HEAD is now at 645f901 初始化
5.垃圾箱里有最近做的reset更改,默认30天清除
$ git reflog
645f901 HEAD@{0}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
a042a2a HEAD@{1}: commit: commit 1
645f901 HEAD@{2}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
34f2bf7 HEAD@{3}: commit: commit 2
645f901 HEAD@{4}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
c4ca02b HEAD@{5}: commit: commit 2
645f901 HEAD@{6}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
4124aa9 HEAD@{7}: commit: 重新测试
645f901 HEAD@{8}: 645f901e30d408a7622e92703e3f34acf37faada: updating HEAD
869b9de HEAD@{9}: 869b9de1ae95b8b7c0cfac45a065fddb41335093: updating HEAD
79b5972 HEAD@{10}: commit: 第二次commit add file
869b9de HEAD@{11}: commit: 第一次commit file
645f901 HEAD@{12}: commit (initial): 初始化
</span>
9. revert命令
恢复指定版本经常提示.idea文件夹有改动,提交失败。解决方法,全局忽略指定文件夹或本工程目录下添加 .gitignore文件忽略指定文件夹及文件
如我的 .gitignore 内容为
<span style="font-size:18px;">*.sh
.idea
*.swp
*.iml
</span>
再次恢复指定版本就成功了
<span style="font-size:18px;">git revert commit指定版本</span>
10.检查是否有文件未提交git status
<span style="font-size:18px;">$ git status
# On branch cmcc
nothing to commit (working directory clean)</span>
11.解决cygwin中提交中文文件乱码问题
<span style="font-size:18px;">git config --global core.quotepath false</span>
12. git branch命令
<span style="font-size:18px;">git branch <new_branch_name> 建立本地 local branch
git branch -m <old_name> <new_name> 改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)
git branch 列出目前有那些 branch 以及目前在那個 branch
git checkout <branch_name> 切換 branch (注意到如果你有檔案修改了卻還沒 commit,會不能切換 branch,解法稍後會談)
git checkout -b <new_branch_name> (<from_branch_name>) 本地建立 branch 並立即 checkout 切換過去
git branch -d <branch_name> 刪除 local branch
開 Branch 最大的好處除了可以不影響 stable 和其他分支版本的開發,另一個超棒的地方是”你可以決定 Merge 的方式”</span>
13. git clone
git clone linux下拷贝一个本地的工程 $ git clone file:///mnt/d/work/admob_dygoogleplay copy_admob windows下拷贝本地工程 $ git clone file:///d:/work/admob_dygoogleplay 拷贝一个远程工程 git clone http://git.myrep.com:8796/git/my_pro.git 用户wulong拷贝远程工程 git clone http://wulong@dypi:8080/r/my_pro.git
14.git pull
git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。
$ git pull <远程主机名> <远程分支名>:<本地分支名>
比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
$ git pull origin next:master
15.git push 远端分支
将arcade分支推送到远端仓库中:
$ git push origin arcade:arcade
删除远端的arcade分支:
$ git push origin :arcade
16. git 查看远端log日志
先将远端仓库更新到本地
$ git fetch origin
查看远端仓库中arcade分支的最近10次日志信息:
$ git log origin/arcade -10