git
\(\Huge{Linux-git}\)
Git 基本指令的使用

- workspace:工作区
- staging area:暂存区/缓存区
- local repository:版本库或本地仓库
- remote repository:远程仓库
git 基本指令
复制:ctrl+insert
粘贴:shift+insert
上传项目(本地 → 远程仓库)
git init
Git 使用 git init 命令来初始化一个 Git 仓库,执行完 git init 命令后,会生成一个.git 目录,该目录包含了资源数据,且只会在仓库的根目录生成。
如果要在指定的目录下生成仓库,则指令为:
git init newDir
newDir 为仓库的路径,执行完成之后,会在 newDir 目录下生成一个.git 目录。
执行该命令之后,就可以在当前目录下生成 newtest 文件夹,并在改文件夹下生成.init 文件夹。
拉取项目(远程仓库 → 本地)
git fetch:远程跟踪分支下载所有历史记录
git merge:合并远程仓库的文件到本地
git pull:git fetch+git merge
git clone:
使用 git clone 命令可以从 Git 仓库拷贝项目,类似于 SVN 中的 svn checkout,命令格式为:
git clone <url> [directory]
url 为 git 仓库地址,directory 为本地目录,比如,要克隆某个 Git 代码仓库,可以用下面的命令:
git clone git://github.com/schacon/grit.git
执行完成之后会在当前目录下生成仓库,如果要指定目录下生成,则可以在后面加一个具体的位置路径,如:
git clone git://github.com/schacon/grit.git newgit
git clone 时,可以用不同的协议,包括 ssh, git, https 等,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码,各种写法格式如下:
git clone git@github.com/schacon/grit.git --SSH协议
git clone git://github.com/schacon/grit.git --GIT协议
git clone https://github.com/schacon/grit.git --HTTPS协议
仓库管理
本地仓库
git status:查看仓库当前状态,显示有变更的文件。
git status -s:获得简短的输出结果。
git log:查看历史提交记录。
点击'q'退出
git reset :回退到上一次的版本。
git reflog:强制回退到之前的某一个状态。
git diff:显示本地文件与暂存区的差异
git restore --staged FileName:将 FileName 从暂存区拉回到本地工作区
git restore "FileName":(如果文件被跟踪,且本地文件删除,这个指令可以恢复)
git reset 修改代号:回退到某一次的版本
git commit -m "XXX" --amend:更改已修改条目(返回并修改先前的提交)
远程仓库
git remote
git remote 命令用于管理 Git 仓库中的远程仓库
git remote:列出当前仓库中已配置的远程仓库
git remote -v:列出当前仓库中已配置的远程仓库,并显示它们的 URL
git remote add <remote_name> <remote_url:添加一个新的远程仓库。指定一个远程仓库的名称和 URL,将其添加到当前仓库中。
git remote rename <old_name> <new_name>:将已配置的远程仓库重命名。
git remote remove <remote_name>:从当前仓库中删除指定的远程仓库。
git remote set-url <remote_name> <new_url>:修改指定远程仓库的 URL。
git remote show <remote_name>:显示指定远程仓库的详细信息,包括 URL 和跟踪分支。
git remote show [remote]:显示某个远程仓库的信息
``:
``:
git remote #列出远程仓库
git remote -v #列出并显示URL
git remote add origin https://github.com/user/repo.git #添加新的远程仓库
git remote rename origin new-origin #重命名
git remote remove new-origin #删除指定远程仓库
git remote set-url origin https://github.com/user/new-repo.git #修改URL
git remote show origin #查看远程仓库信息
让 git 忽略对某些文件的跟踪
- 新建一个
.gitgnore文件,然后在里面写:
# ignore all .txt files #注释
*.txt #'*' + 文件类型
git 常用指令
全局设置
git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig 文件中git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig 文件中git init:将当前目录配置成 git 仓库,信息记录在隐藏的.git 文件夹中
常用命令
git add XX:将 XX 文件添加到暂存区git commit -m "给自己看的备注信息":将暂存区的内容提交到当前分支git status:查看仓库状态git log:查看当前分支的所有版本git push -u (第一次需要-u以后不需要):将当前分支推送到远程仓库git clone git@git.acwing.com:xxx/XXX.git:将远程仓库 XXX 下载到当前目录下git branch:查看所有分支和当前所处分支
查看命令
git diff XX:查看 XX 文件相对于暂存区修改了哪些内容git status:查看仓库状态git log:查看当前分支的所有版本git log --pretty=oneline:用一行来显示git reflog:查看 HEAD 指针的移动历史(包括被回滚的版本)git branch:查看所有分支和当前所处分支git pull:将远程仓库的当前分支与本地仓库的当前分支合并
删除命令
git rm --cached XX:将文件从仓库索引目录中删掉,不希望管理这个文件git restore --staged xx:将 xx 从暂存区里移除git checkout — XX或git restore XX:将 XX 文件尚未加入暂存区的修改全部撤销
代码回滚
git reset --hard HEAD^ 或git reset --hard HEAD~:将代码库回滚到上一个版本git reset --hard HEAD^^:往上回滚两次,以此类推git reset --hard HEAD~100:往上回滚 100 个版本git reset --hard 版本号:回滚到某一特定版本
远程仓库
-
git remote add origin git@git.acwing.com:xxx/XXX.git:将本地仓库关联到远程仓库 -
git push -u (第一次需要-u以后不需要):将当前分支推送到远程仓库 -
git push origin branch_name:将本地的某个分支推送到远程仓库 -
git clone git@git.acwing.com:xxx/XXX.git:将远程仓库 XXX 下载到当前目录下 -
git push --set-upstream origin branch_name:设置本地的 branch_name 分支对应远程仓库的branch_name分支 -
git push -d origin branch_name:删除远程仓库的 branch_name 分支 -
git checkout -t origin/branch_name: 将远程的 branch_name 分支拉取到本地 -
git pull:将远程仓库的当前分支与本地仓库的当前分支合并 -
git pull origin branch_name:将远程仓库的 branch_name 分支与本地仓库的当前分支合并 -
git branch --set-upstream-to=origin/branch_name1 branch_name2:将远程的 branch_name1 分支与本地的 branch_name2 分支对应 -
git pull origin master –-allow-unrelated-histories:当出现本地仓库不是由远程仓库克隆时,并且远程仓库和本地仓库内容不一致,导致本地 push 的时候出现冲突,此时使用本命令将远程仓库拉回本地,并修改冲突后重新 push 即可。
分支命令
-
git branch branch_name:创建新分支 -
git branch:查看所有分支和当前所处分支 -
git checkout -b branch_name:创建并切换到 branch_name 这个分支 -
git checkout branch_name:切换到 branch_name 这个分支 -
git merge branch_name:将分支 branch_name 合并到当前分支上 -
git branch -d branch_name:删除本地仓库的 branch_name 分支 -
git push --set-upstream origin branch_name:设置本地的 branch_name 分支对应远程仓库的 branch_name 分支 -
git push -d origin branch_name:删除远程仓库的 branch_name 分支 -
git checkout -t origin/branch_name: 将远程的 branch_name 分支拉取到本地 -
git pull:将远程仓库的当前分支与本地仓库的当前分支合并 -
git pull origin branch_name:将远程仓库的 branch_name 分支与本地仓库的当前分支合并 -
git branch --set-upstream-to=origin/branch_name1 branch_name2:将远程的branch_name1 分支与本地的 branch_name2 分支对应
stash 暂存
git stash:将工作区和暂存区中尚未提交的修改存入栈中git stash apply:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素git stash drop:删除栈顶存储的修改git stash pop:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素git stash list:查看栈中所有元素
疑难杂症
windows系统中文乱码(274\232\350\256\256\346\200\273\347\273\223)
git config --global core.quotepath false
如果不行的话,可以:打开git bush → 右键 → Options → Text → 【Locale = zh_CN,character set = UTF-8】
tree -N # -N选项就是用编码规范来显示

浙公网安备 33010602011771号