Git使用记录

理清两种git仓库:

(1)本地仓库:可以是本机使用的仓库,不放到网络;可以作为服务器仓库,放到网络;可以是远程克隆下来的仓库;

(2)远程仓库:远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。同他人协作开发某个项目时,需要管理这些远程仓库,以便推送或拉取数据,分享各自的工作进展。


一、对本地git操作:

(1)本地创建一个git仓库:

git init


(2)添加文件到仓库:

git add xxx


(3)提交放入暂存区的所有操作:

git commit


(4)本地克隆一个远程仓库:

git clone <name> <url> <directory>

# name可以不写,默认是origin

# directory可以不写,默认使用远程git一样的根目录名


(5)检查当前git库的状态信息:

git status


(6)删除git中的文件

git rm xxx


(7)移动文件/重命名文件

git mv file_from file_to

# 相当于执行了下面三个操作:

# mv file_from file_to

# git rm file_from

# git add file_to

# 注意用命令重命名和直接重命名不一样!用命令很聪明!


(8)查看提交历史

git log

# 可以使用gitk命令,用图形化工具查看提交历史,相当于git log命令的可视化版本


二、本地git与远程git的操作:

(1)添加一个远程仓库:

git remote add <name> <url>

# name 可以不写,默认是origin

#  url必须是存在的远程git仓库


(2)查看当前的所有远程仓库

git remote

# 可以加上-v现实对应的url,git remote -v


(3)查看远程仓库的信息

git remote show xxx

# xxx是远程仓库的名字


(4)重命名远程仓库

git remote rename name_from name_to


(5)删除远程仓库

git remote rm xxx

# xxx是远程仓库的名字

# 使用情境:碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,或者某个参与者不再贡献代码,又或者不想关联远端仓库,那么需要移除对应的远端仓库,就可以运行 git remote rm 命令。


(6)推送数据到远程仓库:

git push <remote name> <branchname>

# 会推送上一次push后新commit的所有的快照(个数>=1)给远程仓库。

#:一旦进入了本地的某个git中,对该库中的任何操作都会记录下来,此时git status会提醒需要进行哪些操作以备进行commit提交,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用git status 看下,是不是都已暂存起来了,然后再运行提交命令 git commit。

     为了避免对每一个文件的更改都要重新git add xxx,在git commit,替代的操作是只使用一次git commit -a操作!例如更改了源文件demo1.cpp的内容,会提醒是否进行git add demo.cpp操作,同时更改源文件demo2.cpp,也会提醒是否进行git add demo2.cpp操作。此时若使用命令git commit -a就会提交所有类似上面的操作记录,不用每一个文件都去git add了。

      但是,重命名文件(不用命令方式的重命名,即没有使用git mv命令)不能通过git commit -a实现提交,必须将新名字的文件git add,再git commit。例如,将demo1.cpp重命名为demo2.cpp,同时还有对其它文件的更改,使用git commit -a命令后,再git push后查看远程仓库,会发现demo1.cpp确实没了,但没有demo2.cpp。

小结:重命名文件(没有用命令的重命名,这时重命名就等于删除了源文件,新建了另一个和源文件内容一样的文件)一定要确保进行了git add后,git commit才对这个文件的提交有效,才有后续的git push!


(7)同步远程仓库到本地:

有两个命令可以使用,git fetch+git merge和git pull,注意区别。

第一种同步远程仓库数据到本地:git fetch+git merge

git fetch:相当于是从远程获取最新版本到本地,不会自动merge

使用方法:

git fetch <远程主机名>

将某个远程主机的更新,全部取回本地。默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名,比如,取回origin主机的master分支:

git fetch <远程主机名> <分支名>


例如:

git fetch origin master
git merge origin/master

# 含义:从远程origin主机的master主分支获取最新的版本到本地,把origin/master分支与当前分支进行合并。在两个命令中间我们还可以通过git diff命令比较差异,判断是否进行合并。


第二种同步远程仓库数据到本地:git pull

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。

git pull <远程主机名> <远程分支名>:<本地分支名>

比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
git pull origin next:master

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin next
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。

git fetch origin
git merge origin/next


在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。

Git也允许手动建立追踪关系。


git branch --set-upstream master origin/next
上面命令指定master分支追踪origin/next分支。

如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
git pull origin
上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。

如果当前分支只有一个追踪分支,连远程主机名都可以省略。
git pull
上面命令表示,当前分支自动与唯一一个追踪分支进行合并。

如果合并需要采用rebase模式,可以使用–rebase选项。
git pull --rebase <远程主机名> <远程分支名>:<本地分支名>


(8)分支管理:

创建分支:

git branch new_branch

查看分支:

git branch


所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。比如origin主机的master,就要用origin/master读取。
git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。


切换分支:

git checkout branch-name

移到branch-name分支处,you should commit any outstanding changes on one branch before switching to a different one


创建和切换分支组合命令:

git checkout -b new_branch


应用:

取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支:

git checkout -b lab2 origin/lab2

上面命令表示,在origin/master的基础上,创建一个新分支lab2。


此时在lab2分支,若执行下面指令:

git merge lab1

则将lab1分支的内容改动整合到lab2中






 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值