Git基础命令行指令

概念

  • 工作区(Working Directory):电脑本地硬盘目录
  • 版本库(Repository):工作区有个隐藏目录.git,它就是Git的本地版本库
  • 暂存区(stage):一般存放在”git目录”下的index文件(.git/index)中,所以把暂存区有时也叫作索引(index)。

安装Git

设置本地用户名和密码

全局设置

git config --global user.name "用户名"
git config --global user.email "邮箱"

--global表示全局的,即当前用户都有效,该配置会出现在 ~/.gitconfig 文件中,~表示当前用户的目录,比如我的是:C:\Users\dedemao\.gitconfig ,打开该文件你会发现如下图所示的内容:

局部设置

git config user.name "用户名"
git config user.email "邮箱"

局部是只对当前仓库起效的,它的配置信息会在当前仓库目录.git/config文件下:
注意:局部变量会覆盖全局变量。

查看用户名和邮箱地址

git config user.name
git config user.email

配置ssh秘钥

生成ssh密钥

ssh-keygen -t rsa -C 884358@qq.com

注:884358@qq.com为github的登录账号

一路回车即可。
windows系统会在C:\Users\用户名\下生成.ssh文件夹,内容如下:

配置公钥

登录github网站,进入设置页面,点击SSH and GPG keys->New SSH key

C:\Users\用户名\.ssh\id_rsa.pub中的内容复制进去即可。

测试连通性

ssh -T git@github.com

如果是自己搭建的gitlab:

ssh -T ssh://git@git.yourgitlab.com:22

克隆远程仓库

git clone ssh://git@git.yourgitlab.com:22/work/test.git

注意:22为ssh的默认端口

创建新版本库

1.创建空目录

$ mkdir test

2.通过git init命令把这个目录变成Git可以管理的仓库

$ cd test
$ git init

3.添加文件到版本库

例如在目录下新建一个readme.txt文件

$ git add readme.txt

如果要添加当前目录下的所有文件到版本库

$ git add .

4.把文件提交到版本库

$ git commit -m "这里填写本次提交的说明"

5.把本地库的所有内容推送到远程库

5.1 链接远程仓库

$ git remote add origin https://github.com/xxx/xxx.git
  • 删除连接远程仓库
$ git remote rm origin

5.2 把本地仓库的变化连接到远程仓库主分支

$ git pull origin master

5.3 推送

$ git push -u origin master

其他

删除远程仓库链接

$ git remote rm origin

显示工作目录和暂存区的状态

git status 

撤销add操作

git reset HEAD #如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 
git reset HEAD #XXX/XXX/XXX.java 就是对某个文件进行撤销了

查看当前Git环境所有配置

git config --list 

综合练习

git clone https://code.aliyun.com/xxx.git

cd makehtml_m

touch README.md

git add README.md

git commit -m "add README"

git push -u origin master</blockquote>

已存在的文件夹或 Git 仓库

cd existing_folder

git init

git remote add origin https://code.aliyun.com/xxx.git

git add .

git commit

git push -u origin master

删除远程文件夹

git rm -r -n --cached  *
git rm -r --cached *
git commit -m "移除src目录下所有文件的版本控制"
git push origin master

举例:
删除缓存区.idea(保留工作区.idea)

git rm --cached -r .idea

提交gitiginore文件,将.idea从源代码仓库中删除(-m 表示注解)

git commit -m "commit and remove .idea"

推送到远程仓库

git push origin master

.gitignore文件

不想推送到github上的文件和文件夹可以写入到.gitignore文件中,内容举例如下:

vendor/
.idea/
.git

创建分支

  • 创建分支
git branch dev
  • 切换分支
git checkout dev
  • 创建本地dev分支并切换
git checkout -b dev
  • 推送本地origin至远程dev分支
    注:如果远程没有dev分支,将自动创建
git push origin dev

查看分支

git branch

从远程仓库拉取分支

从远程dev分支拉取

git pull origin dev

合并分支

git merge dev

删除分支

git branch -d dev

克隆远程仓库

git clone https://www.github.com/xxx.git

根据远程的dev分支创建本地的dev分支

git checkout -b dev origin/dev

查看日志

git log 文件名

例如:

git log a.txt

一行显示

git log --pretty=oneline a.txt

比较暂存区与本地库

git diff

例如:

git diff a.txt

版本回退

回退至上一版本

git reset --hard HEAD^

回退3个版本

git reset --hard HEAD~3

恢复至指定版本

查看版本

git reflog a.txt

恢复至指定版本号

git reset --hard f18efdb

版本回撤

指本地修改后,还未提交修改的情况
例如修改了本地的a.txt文件后,还未提交至暂存区,希望恢复工作区至上一版本。

git checkout -- a.txt

Fork

Fork用叉子把别人的东西叉到你碗里~
就是把别人的项目clone一份,但是owner变成自己,这样你就可以在遵守Open source license的前提下任意修改这个项目了。
相当于你在原项目的主分支上又建立了一个分支,你可以在该分支上任意修改,如果想将你的修改合并到原项目中时,可以pull request,这样原项目的作者就可以将你修改的东西合并到原项目的主分支上去,这样你就为开源项目贡献了代码,开源项目就会在大家共同的努力下不断壮大和完善。

修改分支名为main

git branch -M main

查看最近或某一次提交修改的文件列表

git log --name-status #每次修改的文件列表, 显示状态
git log --name-only #每次修改的文件列表
git log --stat #每次修改的文件列表, 及文件修改的统计
git whatchanged #每次修改的文件列表
git whatchanged --stat #每次修改的文件列表, 及文件修改的统计
git show #显示最后一次的文件改变的具体内容
git show -5 #显示最后 5 次的文件改变的具体内容
git show commitid #显示某个 commitid 改变的具体内容

导出修改和添加的文件

查看commit id

git log

导出指定commit id的文件

git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $commit_id | tar -czf file.tgz -T -

参考:
https://code.aliyun.com/

http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

发表评论

邮箱地址不会被公开。 必填项已用*标注