Git常用命令 > 个人收纳

安装简介

Git官网
一直next,目录的时候换成自己自定义的就好了。
Git 概念图
在这里插入图片描述
可参考教程:
廖雪峰版
猴子版
粗略版

1.初始化命令
1.1 配置身份
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置。不用的话可以配置特定的仓库身份。

2.2 检查配置
$ git config --global user.name
$ git config --global user.email
3.3 创建本地仓库

找一个文件夹,然后通过git init让该文件被git管理。

$ cd /d/Git/
$ mkdir learngit
$ cd learngit/
$ pwd
/d/Git/learngit
$ git init
Initialized empty Git repository in D:/Git/learngit/.git/

我当前的仓库为/d/Git/learngit。如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。
在这里插入图片描述
可以看到当前目录多了个.git文件。这个目录是Git来跟踪管理版本库的,别手动修改这个目录里面的文件,会把Git仓库给破坏了。


2.文件操作
2.1 添加文件到版本库
$ git add sample.txt
$ git commit -m "创建了简单文件"
[master (root-commit) d5fecc7] 创建了简单文件
 1 file changed, 1 insertion(+)
 create mode 100644 sample.txt

git add <files> : 添加文件 (文件、目录) 到仓库,一次性可以添加很多个文件。(文件需要在被管理的仓库下git init)
git add . 添加当前目录所有文件

git commit -m <message> :提交暂存区所有文件到仓库。
git commit <files> -m <message> :提交暂存区指定文件到仓库。

在这里插入图片描述

为什么Git添加文件需要addcommit一共两步呢?
因为commit可以一次提交很多文件,所以你可以多次add不同的文件.例如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
2.2 查看文件变更

对刚才提交的文件进行改动。
在这里插入图片描述

git status :查看当前库状态。

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   sample.txt

no changes added to commit (use "git add" and/or "git commit -a")

git diff:查看全局变动。
git diff <files>: 查看具体某个文件变动。
git diff head <files>:命令可以查看工作区和版本库里面最新版本的差异。

$ git diff
diff --git a/sample.txt b/sample.txt
index 105266f..33870e8 100644
--- a/sample.txt
+++ b/sample.txt
@@ -1 +1,3 @@
-学习git
\ No newline at end of file
+学习git
+
+二次学习git
\ No newline at end of file

这时候需要提交就用git add该文件到变更区,然后git commit 到本地库。

2.3 查看历史版本

git log :查看全部历史记录。
git log 分支:查看某个分支历史记录。
git log -1:查看一条提交记录。
git log -1 -p:查看一条记录和变动内容。
git log --oneline:单行简单显示。
git log --pretty=oneline :单行id全显。
git log id号:查看某个id号的提交记录。
git log --graph --pretty=oneline --abbrev-commit :查看当前分支合并情况。

git log --graph --oneline可以达到一样的效果。

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit (master)
$ git log
commit 3561b96a80f534c710c5650af4c4c1c24dc9911d (HEAD -> master)
Author: pjx <995536807@qq.com>
Date:   Sat Jul 16 20:30:46 2022 +0800

    三次提交

commit 960aaabfdc1471b7d9b6026e1fe19ce8a7a17cee
Author: pjx <995536807@qq.com>
Date:   Sat Jul 16 20:27:30 2022 +0800

    二次提交

commit d5fecc7b13c4cb2b177838dbb2ac961db497f08c
Author: pjx <995536807@qq.com>
Date:   Sat Jul 16 13:25:31 2022 +0800

    创建了简单文件

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit (master)
$ git log --oneline
3561b96 (HEAD -> master) 三次提交
960aaab 二次提交
d5fecc7 创建了简单文件

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit (master)
$ git log --pretty=oneline
3561b96a80f534c710c5650af4c4c1c24dc9911d (HEAD -> master) 三次提交
960aaabfdc1471b7d9b6026e1fe19ce8a7a17cee 二次提交
d5fecc7b13c4cb2b177838dbb2ac961db497f08c 创建了简单文件
2.4 回退版本

版本可以根据版本号id,也可以根据HEAD:当前版本 | HEAD^:上个版本 | HEAD^^:上上个版本 | …HEAD~100

git reset --hard 版本号:切换至某个版本
git reflog <files>:查看每次的操作记录,可以看到版本号id。

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit (master)
$ git reset --hard HEAD^
HEAD is now at 960aaab 二次提交

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit (master)
$ git log
commit 960aaabfdc1471b7d9b6026e1fe19ce8a7a17cee (HEAD -> master)
Author: pjx <995536807@qq.com>
Date:   Sat Jul 16 20:27:30 2022 +0800

    二次提交

commit d5fecc7b13c4cb2b177838dbb2ac961db497f08c
Author: pjx <995536807@qq.com>
Date:   Sat Jul 16 13:25:31 2022 +0800

    创建了简单文件

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit (master)
$ git reset --hard 3561
HEAD is now at 3561b96 三次提交

$ git reflog sample.txt
3561b96 (HEAD -> master) HEAD@{0}: reset: moving to 3561
960aaab HEAD@{1}: reset: moving to HEAD^
3561b96 (HEAD -> master) HEAD@{2}: commit: 三次提交
960aaab HEAD@{3}: commit: 二次提交
d5fecc7 HEAD@{4}: commit (initial): 创建了简单文件
2.5 撤销提交

git restore <file> :进行取消本次工作区修改(还在工作区使用)。
git restore --staged <file>:删除暂存区该文件(已经git add到暂存区使用)

$ git add sample.txt

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   sample.txt

$ git restore --staged sample.txt

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   sample.txt

no changes added to commit (use "git add" and/or "git commit -a")

$ git restore sample.txt
2.6 删除文件

创建文件add、commit到版本库就省略了。
情况一:删错了

git checkout -- <file> : 用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git restore <file> :通过撤销工作区的操作可以复原。

$ rm -rf test1.txt

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    test1.txt

no changes added to commit (use "git add" and/or "git commit -a")

情况二:删除

git rm <file>:(若本地文件还存在,也会把本地删掉) 把 删除该文件的操作 提交到暂存区。(commit提交到版本库后彻底删除)

$ git rm test1.txt
rm 'test1.txt'

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    test1.txt
        
$ git commit -m "删除测试文件"
[master da0e9ca] 删除测试文件
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 test1.txt
3.远程仓库

该部分都是针对如何关联远程仓库操作。常见的远程仓有GitHub、Gitee、Gitlab。本次以GitHub为例子。先在github上自行创建一个repository

3.1 添加远程库

git remote add <远程库别名> 远程库版本链接 :将本地库关联到远程库。
git push -u <别名> <分支> :推送到远程库。

在这里插入图片描述
SSH警告
第一次通过Git使用clonepush命令就会出现以下情况。输入yes就会把GitHubKey添加到本机的一个信任列表里。

$ git push -u origin master
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
3.2 远程库权限

要想能够在远程库操作,单单remote add 关联还不够,需要把本地生成的密钥加入到远程库中

cd ~/.ssh:切换到本地密钥管理目录。
ssh-keygen -t rsa -C <解释> :生成ssh密钥。

生成方式有很多,不逐个说明了。ssh-keygen --help 自己查看。

$ ssh-keygen -t rsa -C "generate link to github key"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/PJX/.ssh/id_rsa):
/c/Users/PJX/.ssh/id_rsa already exists.
Overwrite (y/n)? n  "此处发现已经有了,所以就n取消生成了,没有的就一直回车"

$ ll
total 9
-rw-r--r-- 1 PJX 197121 2602 Sep 15  2021 id_rsa
-rw-r--r-- 1 PJX 197121  570 Sep 15  2021 id_rsa.pub
-rw-r--r-- 1 PJX 197121  713 Jul 17 12:30 known_hosts

PJX@DESKTOP-93BASN4 MINGW64 ~/.ssh
$ cat id_rsa.pub
**密钥**

在这里插入图片描述

3.3 删除关联远程库

git remote -v :查看关联远程库信息(可以看到对应的pushfetch权限)。
git remote rm <name>:删除关联某个远程库。

$ git remote -v
origin  git@github.com:Tomcat-8/learngit.git (fetch)
origin  git@github.com:Tomcat-8/learngit.git (push)
origin1 git@github.com:Tomcat-8/learngit1.git (fetch)
origin1 git@github.com:Tomcat-8/learngit1.git (push)

$ git remote rm origin1

$ git remote -v
origin  git@github.com:Tomcat-8/learngit.git (fetch)
origin  git@github.com:Tomcat-8/learngit.git (push)
3.4 克隆远程库

git clone 远程库版本链接 :克隆远程库到本地(工作区)。

在这里插入图片描述

$ git clone git@github.com:Tomcat-8/learngit1.git
Cloning into 'learngit1'...
warning: You appear to have cloned an empty repository.
$ ll
total 3
drwxr-xr-x 1 PJX 197121 0 Jul 16 22:06 learngit/
drwxr-xr-x 1 PJX 197121 0 Jul 17 13:14 learngit1/
4.分支管理

**git branch :展现该项目的所有分支和指出当前的。
git branch <分支名>:在当前分支复刻出新分支。
git checkout <分支名>:切换到指定的分支。
git checkout -b <分支名>:创建分支,并且切换到该分支。
git switch -c <分支名>:创建分支,并且切换到该分支。
git merge <分支名>:将指定分支合并到当前分支中。
git merge --no-ff -m <解释> <分支>:其中--no-ff是禁用Fast-forward模式。
git branch -d <分支名>:删除指定分支。
git branch -D <分支名>:强制删除(未合并过的分支)。
**

以下合并方式为Fast-forward-快进模式,即直接将dev的提交指向dev-1.0.0。这样的模式,在删除分支后,会丢掉分支信息。不会记录merge的提交,所以一般使用--no-ff

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit1 (dev)
$ git merge dev-1.0.0
Updating f949fb7..1c909f4
Fast-forward
 testmerge.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 testmerge.txt

在这里插入图片描述

4.1 合并冲突

git merge --abort:放弃本次合并。


想要解决冲突,要vi修改文件,解决行冲突,或者git rm删掉不用的冲突文件。然后才能git commit本次合并请求。
git log --graph --pretty=oneline --abbrev-commit :查看当前分支合并情况。

提交后可以查看当前分支合并情况

$ git log --graph --pretty=oneline --abbrev-commit
*   fc05f5f (HEAD -> dev) resolute conflic
|\
| * 6853431 (feature1) :# Please enter the commit message for your changes. Lines starting
* | 4b35e4c commit conflic
|/
* 1c909f4 mergetest
* f949fb7 (main) first
4.2 独立暂存区(Bug分支情景)

例如:当遇见dev分支任务在修改到一半,main的代码出现了线上问题需要排查,这时候如果直接git checkout main就会把dev上的代码merge到main工作区。所以在不影响原先的任务、不影响观看原先main的代码,如何操作呢?

git stash:将当前分支在本地版本库的暂存区内容先独立存储。
git stash list:查看当前分支独立暂存区的内容。
git stash apply:恢复独立暂存区所有内容到工作区。

git stash apply <独立号>:恢复独立暂存区某个独立号内容到工作区。
git stash drop:清除该分支独立暂存区。
git stash pop:恢复独立暂存区到工作区,同时清理。
git cherry-pick 版本号:复刻特定的提交到当前分支。

git stash apply + git stash drop

恢复后,独立暂存区不会自动清掉,需要手动清理

$ git stash
Saved working directory and index state WIP on dev: f949fb7 first

$ git stash list
stash@{0}: WIP on dev: f949fb7 first

$ git stash apply
On branch dev
Your branch is up to date with 'origin/dev'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   stash.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        file.txt
        
$ git stash drop
Dropped refs/stash@{0} (a14472d700934ece80fbd75a1f0845a27aa22d88)

当你去main处理完Bug后,此时你会发现,dev是从main复刻出来的,也存在这个Bug。解决方案如下

  1. 手动在当前分支修改(缺陷 :效率低)
  2. 直接将main合并到dev(缺陷 :如果main延伸了新的文件,dev并没有,这样会一起merge过来。)
  3. 复制一个解决Bug的提交到当前分支(git cherry-pick
$ git log main --oneline
d930a34 (origin/main, main) stash bug
f949fb7 first

PJX@DESKTOP-93BASN4 MINGW64 /d/Git/learngit1 (dev)
$ git cherry-pick d930a34
[dev 776c0ce] stash bug
 Date: Sun Jul 17 22:13:22 2022 +0800
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 stash.txt
4.3 推送和拉取

git push 别名 分支名:推送到远程指定分支上。(别名是git remote 中指定的,例如origin )
git push:默认推送当前分支。
git pull:拉取当前远程分支最新情况。
git checkout -b 本地分支 origin/远程分支:在本地复刻远程的分支。(分支名最好和远程保持一致)
git branch --set-upstream 本地分支 origin/远程分支:建立本地分支和远程分支的关联。

4.4 变基

变基:以什么版本为基础做了修改,变基就是把版本基础点变动了。

git rebase:提交后,远程以当前提交作为基点。(可以把分叉的提交变成直线)

$ git log --pretty=oneline --graph
*   bcff2aee83da823cb72ae835671b4f866b5fbf3e (HEAD -> main, origin/main) Merge branch 'main' of github.com:Tomcat-8/learngit1
|\
| * 2bb0709974a99ebd454d36148be68386176a7915 rebase test
* | 4bc65ca4adb04789c1cf261f2ae2c880fbcf4097 rebase look
|/
* d930a34c087f406040846d98f6f07bbd6b566979 stash bug
* f949fb7957f06f8f2b2823a4f59ae824f3fb59c0 first

$ ll
total 0
-rw-r--r-- 1 PJX 197121 0 Jul 17 23:05 file.text
-rw-r--r-- 1 PJX 197121 0 Jul 17 23:08 file.txt
-rw-r--r-- 1 PJX 197121 0 Jul 17 14:55 readme.md
-rw-r--r-- 1 PJX 197121 0 Jul 17 22:19 stash.txt

$ git rm file.text
rm 'file.text'

$ git commit -m "delete file to show rebase method"
[main 6a43735] delete file to show rebase method
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 file.text

$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

$ git rebase
Current branch main is up to date.

$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

$ git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 226 bytes | 226.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:Tomcat-8/learngit1.git
   bcff2ae..6a43735  main -> main

$ git log --oneline
6a43735 (HEAD -> main, origin/main) delete file to show rebase method
bcff2ae Merge branch 'main' of github.com:Tomcat-8/learngit1
4bc65ca rebase look
2bb0709 rebase test
d930a34 stash bug
f949fb7 first
5.标签管理

标签总是和某个commit挂钩。如果这个commit既出现在main分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

git tag:查看所有标签
git show 标签名:查看某个标签信息。


git tag <tagname>:用于新建一个标签,默认为HEAD,也可以指定一个commit id
git tag -a <tagname> -m "说明":打标签同时带上说明。
git tag <tagname> 提交号:为某个特定的提交打上标签。


git tag -d <tagname>:删除某个标签。
git push origin :refs/tags/<tagname>:删除某个远程标签。


git push origin <tagname>:推送一个本地标签。
git push origin --tags :推送所有的标签。

$ git show v0.9
tag v0.9
Tagger: pjx <youxiang@qq.com>
Date:   Tue Jul 19 11:30:22 2022 +0800

version by 0.9

commit 6a4373542c3314ee4905d0a97bb53a54a4731b04 (HEAD -> main, tag: v0.9, tag: v0.8, origin/main)
Author: pjx <youxiang@qq.com>
Date:   Sun Jul 17 23:12:07 2022 +0800

    delete file to show rebase method

diff --git a/file.text b/file.text
deleted file mode 100644
index e69de29..0000000

$ git tag v1.0 f949fb7 -m "自定义打标签"

$ git tag
v0.8
v0.9
v1.0

$ git tag -d v0.8
Deleted tag 'v0.8' (was 6a43735)

$ git push origin --tags
Enumerating objects: 2, done.
Counting objects: 100% (2/2), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 300 bytes | 300.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:Tomcat-8/learngit1.git
 * [new tag]         v0.9 -> v0.9
 * [new tag]         v1.0 -> v1.0

$ git push origin :refs/tags/v0.9
To github.com:Tomcat-8/learngit1.git
 - [deleted]         v0.9
6.自定义Git

git config --global color.ui true:全局颜色。(默认为true)
git check-ignore -v 要提交的文件:查看文件被忽略,匹配.gitignore哪条规则
git add -f 文件:-f 用于强制提交,忽略规则。


6.1 忽略文件

Git工作区的根目录下创建一个特殊的.gitignore文件。可以在这个文件中添加忽略的文件。

忽略文件的原则是:

  • 忽略操作系统自动生成的文件,比如缩略图等;
  • 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  • 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
  • 已经被add的文件后面再添加到.ignore是无效的(需要先清空缓存再次add)
    git rm -rf --cached .
    git add .

虽然可以用git add -f强制添加进去,但有强迫症的童鞋还是希望不要破坏.gitignore规则,这个时候,可以添加两条例外规则:

排除所有.开头的隐藏文件:
.*
排除所有.class文件:
*.class
不排除.gitignore和App.class:
!.gitignore
!App.class

把指定文件排除在.gitignore规则外的写法就是!+文件名,所以,只需把例外文件添加进去即可。

$ vi .gitignore

$ cat .gitignore
#Windows
Desktop.ini
ignore.*
*.png

$ touch ignore.txt|show.png
bash: show.png: command not found

$ git status  '可以看到此处只提示.gitignore文件了,其余两个被忽略了'
On branch main
Your branch is up to date with 'origin/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore

nothing added to commit but untracked files present (use "git add" to track)

$ git add ignore.txt
The following paths are ignored by one of your .gitignore files:
ignore.txt
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"

$ git check-ignore -v ignore.txt
.gitignore:3:ignore.*   ignore.txt
6.2 配置别名

如何达成git st == git status
git config --global alias.st status

git config --global alias.后来 原本:相当于 后来 == 原本。
cat .git/config:查看仓库的配置文件。
cat .gitconfig:查看用户的配置文件。

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用
案例演示:git restore --staged 替换成 git unstage
如果参数有单引号就用双引号替换:
git commit -m "update 'README.txt'"

$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    file.txt
$ git config --global alias.unstage 'restore --staged'

$ git unstage file.txt

$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    file.txt

no changes added to commit (use "git add" and/or "git commit -a")

可以自己试试这个
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
在这里插入图片描述

6.3 自定义Git服务器

自己搭建一台Git服务器作为私有仓库
搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用UbuntuDebian,这样,通过几条简单的apt命令就可以完成安装。
1️⃣安装git:
$ sudo apt-get install git

2️⃣创建一个git用户,用来运行git服务:
$ sudo adduser git

3️⃣创建证书登录:
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个

4️⃣初始化Git仓库:
先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
$ sudo git init --bare sample.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
$ sudo chown -R git:git sample.git

5️⃣禁用shell登录:
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

6️⃣克隆远程仓库:
现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
答疑点

Q:输入git add readme.txt,得到错误:fatal: not a git repository (or any of the parent directories)
A:Git命令必须在Git仓库目录内执行(git init除外),在仓库目录外执行是没有意义的。


Q:输入git add readme.txt,得到错误fatal: pathspec 'readme.txt' did not match any files
A:添加某个文件时,该文件必须在当前目录下存在,用ls或者dir命令查看当前目录的文件,看看文件是否存在,或者是否写错了文件名。


Q:输入git status,得到错误untracked files: (use "git add<file>......."to include in what willbe committed
A:当前版本库你还没添加任何文件,用git add 添加先。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值