初学git

187 阅读5分钟

一、配置github

1、github添加公钥

a)本地生成公钥,使用命令 ssh-keygen -t rsa -C "你的邮箱名"

命令需要输入的地方,直接回车就行,最后会将公钥文件保存在/root/.ssh/id_rsa.pub.(准确讲是~/.ssh/id_rsa.pub,~是系统主目录,一般都是/root/目录)

b)添加公钥,github添加公钥位置如下

点击:github页面右上个人头像---Settings--SSH and GPG keys---New SSH key,如下:

cat ~/.ssh/id_rsa.pub,将内容拷贝进去,最后Add SSH key。

2、设置本地git库信息

每次git commit的时候都需要name和email信息,如下:

先使用git config --list可以查看当前没有信息,然后使用git config --global user.name和git config --global user.email添加用户名和邮箱(邮箱需要是注册github时的邮箱),最后再git config --list确认信息。git config信息都会保存在~/.gitconfig文件中,你也可以直接vim进行修改。

3、git clone

如图,在github上获取远端库地址。然后在本地输入git clone命令,如下:

第一次clone,建立连接会询问是否确认公钥,输入yes即可。当前目录下出现本地库,即成功了。

二、git常用命令

1、git log

git log

查看当前分支的提交记录,每一次的提交记录都以commit开头,commit后面的一串字符是本次提交的唯一识别。接着就是提交者、提交时间,最后是提交说明。

经常我们需要使用git log来确定本分支是否是最新的,看commit是不是和远端库的最新commit一致。特别是在多个人开发同一个库的时候,别人在远端库更新,而自己本地库未更新。如果本地分支不是最新的,则在后面提交、合并的时候就会报错。所以我们每次在修改代码前,最好确认下是不是最新代码。

2、 git pull

git pull origin refs/heads/remote_branch:local_branch

如果本地代码落后于远端代码,可以使用git pull 命令来更新本地代码。在我们push和merge的时候,如果本地代码本身落后于远端,则也会报错。报错当然可以改,但为了不必要的麻烦,最好每次修改前确认代码是否最新。

3 、git branch

git branch
git branch branch_name
git branch -vv
git branch -d branch_name
git branch --set-upstream-to=origin/remote_branch local_branch

经常本地库会缺少相对应的分支,就可以使用git branch branch_name来创建本地分支。-vv参数如下图:

详细显示本地分支是否有跟踪的远端分支,test分支就没有跟踪。在创建本地分支后,需要使用git branch --set-upstream-to=origin/remote_branch local_branch来将本地分支跟踪到远端分支。git branch -d branch_name删除本地分支。

4、git ls-remote

git ls-remote

查看远端有哪些分支,在要pull和push的时候,就需要查看远端分支名。

5、git checkout

git checkout branch0

切换分支。每次在本地库操作的时候,一定要明确在哪个分支。

6、git add

git add ./

在我们使用git log、git branch 明确了远端库和本地库情况后,开始修改代码。代码提交的第一步是回到库项目的根目录下,使用git add ./,将更改保存到暂存区。git add ./的作用范围是当前目录下所有更改文件。如果只希望提交某个文件,可以在add后跟相对文件路径(也就不需要回到根目录了)。

7、git commit

git commit

git add 后,就要git commit来更新到本地库中。提交说明可以通过-m "提交说明"来添加,也可以直接git commit回车,进入到文本中,用vim编辑后保存退出。 经常git默认commit的编译器不是vim,可以使用git config --global core.editor vim来设置。

8、git push

git push origin local_branch:origin/remote_branch

git commit后,使用git push提交到远端库。最好指定是将本地哪个分支的代码提交到远端哪个分支上,明确提交范围。其中冒号前后没有空格

9、git merge

git merge --no-ff branch_name

使用git merge --no-ff branch_name将本地的branch_name分支合并到当前分支(当前分支可以通过git branch查看到有*标记的分支)。然后git push提交合并,建议使用--no-ff参数。merge的时候经常会有冲突,通过git status查看有冲突的文件。

10、git status

git status

查看本地库距离最近一次提交的代码状态,包括更改、添加、删除。比如我们在本地库调试代码,但时间长了容易忘记修改了哪些代码,这个时候就可以使用git status查看修改过的文件,然后通过git diff查看每个文件具体的修改内容。

11、git diff

git diff file
git diff commit1 commit2
git diff branch1 branch2

git diff比较差异,在git status中看到了变化文件,如果想知道具体内容变化,可以使用git diff file。如果想知道两次提交的差异,可以git diff commit1 commit2。commit1,commit2可以通过git log查看,是每次提交的标识。如果想知道两分支最新提交之间的差别,可以git diff branch1 branch2。

12、git reset

git reset --hard commit
git push -f -u origin 

如果提交的某个更改不需要了,可以使用git reset --hard commit 来回退到commit所在的提交,然后使用git push -f -u origin,就能对远端库也回滚了。

13、git tag

git tag
git tag tagname0
git tag -d tagname0

git tag查看已有tag,git tag tagname0,在当前分支的最新commit上打上tagname0,然后需要git push origin tagname0来提交到远端。打tag可以让我们快速找个某个时间点的代码,比如某个调试点的代码。