Git命令

来源:互联网 发布:游戏m美工招聘' 编辑:程序博客网 时间:2024/05/21 00:18

Git命令

       Git对同一个版本库可以有多个分支,可以在不同的分支下工作,HEAD指向当前分支。当在某个分支工作时,文件系统将呈现该分支的文件,对于新创建或者新创建且已经加到暂存区的文件,任何分支都可以看到该文件。只要不切换,下次在当前目录运行Git时还是处在这个分支,还是这个状态每次本地提交给当前分支,都会产生一个commit id,且只会对该提交分支起作用,其他分支内容没变化Git在本地维护一个版本库,文件必须是文本文件,可以把本地库推送到远程库,或者把远程库克隆到本地,拉取远程的更新。


一、操作本地仓库

1.1 安装git

sudo apt-get install git

1.2 在当前目录下创建一个本地版本库,并默认生成master分支

git init

1.3 添加工作区的文件到暂存区

        同一个文件可以多次修改,可以反复添加

git add file_name

1.4 查看工作区的文件和本地版本库的文件的内容差异

git diff file_name

1.5 撤消暂存区的文件

git reset file_name

1.6 撤销工作区文件的修改

        工作区的文件回到最近一次add或者commit状态,最近的修改可能被丢弃。工作区误删的文件可以利用此命令恢复。版本库没有记录的文件不能撤销。

git checkout -- file_name

1.7 删除本地版本库的文件

       最后有要commit。

对于文件:

git rm file_name

对于目录,递归删除:

git rm -r dir_name

1.8 提交暂存区的文件到本地版本库的当前分支,并附带注释

        提交后,暂存区没有文件。

git commit -m “message”

1.9 查看工作区和暂存区文件的状态

git status

1.10 查看提交记录

git log --pretty=oneline

1.11 查看所有命令提交记录

git reflog

1.12 本地版本库回到某个版本

某个版本:

git reset --hard commit_id(开头7位)

上一个版本:

git reset --hard HEAD^

1.13 忽略工作区中的文件

        在工作区新建一个.gitignore文件,并写入文件名或目录名:

*.class*.py

注意.gitignore也要提交到版本库中。

强制添加某个文件:

git add -f file_name

二、操作分支

        创建分支的目的是为了完成某一项独立的工作,分支最终要合并到主分支上,然后删除掉。

2.1 在当前分支上创建分支

        以当前分支的提交点为起点

git branch branch_name

2.2 切换分支

git checkout branch_name

2.3 创建并切换分支

git checkout -b branch_name

2.4 删除分支

git branch -d branch_name

2.5 强制删除没有被合并的分支

git branch -D branch_name

2.6 查看当前是哪个分支

        当前分支带有*

git branch

2.7 合并指定分支到当前分支(fast-forward

        不用加-m “messag", 快速移动只是移动指针不会提交

git merge branch_name

2.8 合并分支并提交信息

        fast-forward没有相应的分支信息,可能看不出当时有其他分支存在。

git merge --no-ff -m “message” branch_name

        这样会有多一次message的提交信息。

2.9 合并时出现冲突,手动解决冲突再提交

        合并的两个分支修改了同一个文件的同一行内容,此时出现冲突,冲突文件有===或者<<<或者>>>。先add,再commit。如下,<<<HEAD到=====表示当前分支,====到>>>>表示远程分支。

<<<<<<< HEAD    /**     * ok的status = 0, message = null     * @param data     * @return     */    public static Result ok(final Object data) {        return new Result() {=======    public static Result ok(final Object data) {        return      new Result() {>>>>>>> 3c4a53e66edac603fb5b475e1de9db536d9e9ec7


2.10 查看分支合并图

git log --graph --pretty=oneline --abbrev-commit

三、 保存分支现场

        当在某个分支做了修改时,一般情况下,我们无法切换到其他分支,会提示必须先对该分支的修改进行处理。这时我们可以先保留现场,然后再切换到其他分支,最后再切回来继续处理。

3.1 保存某个分支的现场

git stash

3.2 查看stash

git stash list

3.3 恢复stash现场,并删除

git stash pop

四、上传本地仓库到GitHub

4.1 配置GitHub

        首先使用SSH加密,在用户主目录下生成公钥.ssh/id_rsa和私钥.ssh/id_rsa.pub

ssh-keygen -t rsa -C “your email”

        然后在GitHub添加公钥的内容。因为GitHub需要通过公钥确定推送者的身份。GitHub上的文件任何用户都可以看,但只有加了公钥的用户能修改。

4.2 关联本地已有仓库和GitHub上新建的空仓库

       注意,我的公钥必须在用户名的信任列表中。GitHub上的远程仓库目录必须手动建好。在本地库下添加README.md,这样GitHub会展示README.md的内容。这时远程仓库的名字是origin,而且origin指向git@github.com:用户名/仓库名.git。用ssh来连接。

git remote add origin git@github.com:用户名/仓库名.git

4.3 推送本地仓库到远程仓库

git push -u origin master

        push该分支上的所有提交记录(commit id)推送到远程库-u的作用是关联两个master,这样git pull时就会知道track信息,知道从远程的哪个分支拉取内容。下次push可以把-u去掉

五、克隆GitHub上的仓库到本地

5.1 克隆远程仓库

        GitHub上已有内容的仓库,在本地clone出对应的仓库,这时本地master和远程master对应,已经track。远程仓库的名称默认是origin

git clone git@github.com:用户名/远程仓库名.git

5.2 显示origin的地址

git remote -v

5.3 创建分支并与远程分支对应

        克隆远程仓库后本地只有一个master分支,其他分支的内容一概不知。通常还要建立对应远程其他分支的本地分支,下面命令已经track。然后再拉取该分支的内容git pull

git checkout -b dev origin/dev

5.4 建立本地分支和远程分支的对应

        pull提示没track时,使用此命令。在第一次push时使用-u选项track,无需用此命令。track对应的远程分支,即从哪个分支跟当前分支合并。拉取远程分支时,先使用下面的命令:

git branch --set-upstream-to=origin/dev dev

然后再使用

git pull

        在仓库的根目录下运行下面的命令,可以发现添加了本地分支和远程分支的对应信息。

cat .git/config

          这时,该文件里添加了如下内容:

[branch "dev"]remote = originmerge = refs/heads/dev

六、push出错,本地和远程合并

6.1 远程比本地新时,先pull,解决冲突

        必须有track记录,远程分支会跟当前分支合并

git pull

6.2 push

git push origin dev

6.3 GitHubfork其他账户的仓库

点击fork即可。然后自己的账户下就有了该库的副本。这时我们可以在自己的账户下pullpush该库。


参考博客:

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000


0 0
原创粉丝点击