Git笔记

90 阅读2分钟

Git笔记

一、初始化操作

# 初始化一个新的Git仓库
$ git init# 建一个新的 Git 仓库,[project-name] 是所想要创建的项目名称
$ git init <项目名称># 克隆远程仓库到本地
$ git clone <项目地># 指定本地仓库的目录
$ git clone <远程仓库的网址> <本地目录># -指定要克隆的分支,默认是master分支
$ git clone <远程仓库的网址> -b <分支名称> <本地目录>

二、配置操作

# 获取config信息
$ git config --list
​
# 设置提交代码时的用户名和邮箱
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

三、文件操作

# 添加指定文件到暂存区
$ git add <文件名># 添加指定目录到暂存区包括子目录
$ git add <文件夹名># 添加当前目录的所有文件到暂存区
$ git add .# 移除跟踪指定的文件,并从本地仓库的文件夹中删除
$ git rm <文件路径># 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
$ git rm -r <文件夹路径># 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
$ git rm --cached

四、提交操作

#把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
$ git commit# 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>"# 把所有修改、已删除的文件提交到本地仓库中
# 不包括未被版本库跟踪的文件,等同于先调用了"git add -u"
$ git commit -a -m "<提交的描述信息>"# 使用一次新的commit,替代上一次提交
#如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

五、远程仓库操作

# 列出已经存在的远程仓库
$ git remote
​
# 列出远程仓库的详细信息,在别名后面列出URL地址
$ git remote -v
$ git remote --verbose
​
# 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址>
​
# 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名>
​
# 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名>
​
#修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>

六、远程同步操作

# 将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名>
​
# 将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>
​
# 从远程仓库获取最新的更改并将其合并到本地分支
# 等同于git fetch + git merge
$ git pull
​
# 将当前分支推送到指定的远程分支
$ git push <远程仓库的别名> <分支名>
​
# 将所有分支推送到远程
$ git push --all
​
# 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>

七、分支操作

# 列出本地的所有分支,当前所在分支以 “*” 标出
$ git branch
​
# 列出本地的所有分支并显示最后一次提交,当前所在分支以“*”标出
$ git branch -v
​
# 切换到已存在的指定分支
$ git checkout <分支名称>
​
#新建一个分支,并切换到该分支
$ git checkout -b [<分支名称>]
​
#新建一个分支,但依然停留在当前分支
$ git branch <分支名>
​
# 修改分支名称
# 如果不指定原分支名称则为当前所在分支
$ git branch -m [<原分支名称>] <新的分支名称>
#强制修改分支名称
$ git branch -M [<原分支名称>] <新的分支名称>
​
# 删除指定的本地分支
$ git branch -d <分支名称>
​
# 强制删除指定的本地分支
$ git branch -D <分支名称>

八、差异比较操作

# 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
$ git diff
​
# 比较暂存区中的文件和上次提交时的差异
$ git diff --cached
$ git diff --staged
​
# 比较当前文件和上次提交时的差异
$ git diff HEAD# 查看从指定的版本之后改动的内容
$ git diff <commit ID>
​
# 比较两个分支之间的差异
$ git diff <分支名称> <分支名称>
​
# 查看两个分支分开后各自的改动内容
$ git diff <分支名称>...<分支名称>

九、还原操作

#重置暂存区,但文件不受影响
# 相当于将用 “git add” 命令更新到暂存区的内容撤出暂存区,可以指定文
#没有指定 commit ID 则默认为当前 HEAD
$ git reset [<文件路径>]
$ git reset --mixed [<文件路径>]

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
# 相当于调用“git reset --mixed” 命令后又做了一次“git add"
$ git reset --soft <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <commit ID>

十、标签操作

# 打印所有的标签
$ git tag
​
# 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
$ git tag <标签名称> [<commit ID>]
​
# 添加带有描述信息的附注标签,可以指定之前的提交记录
$ git tag -a <标签名称> -m <标签描述信息> [<commit ID>]
​
# 切换到指定的标签
$ git checkout <标签名称>
​
# 查看标签的信息
$ git show <标签名称>
​
# 删除指定的标签
$ git tag -d <标签名称>
​
# 将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称>
​
# 将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> -tags