一. 写一段脚本,或者一个验证过程来证明如果linux系统达到最大文件打开数后,无法打开新的文件。思考下如何找到现在正在打开的文件是哪些,有多少?

  1. gauss@gauss-XPS-15-9570:~$ ulimit -a
  2. core file size (blocks, -c) 0
  3. data seg size (kbytes, -d) unlimited
  4. scheduling priority (-e) 0
  5. file size (blocks, -f) unlimited
  6. pending signals (-i) 30108
  7. max locked memory (kbytes, -l) 16384
  8. max memory size (kbytes, -m) unlimited
  9. open files (-n) 1024 ## 这里的值表示系统最大文件打开数,默认是1024
  10. pipe size (512 bytes, -p) 8
  11. POSIX message queues (bytes, -q) 819200
  12. real-time priority (-r) 0
  13. stack size (kbytes, -s) 8192
  14. cpu time (seconds, -t) unlimited
  15. max user processes (-u) 30108
  16. virtual memory (kbytes, -v) unlimited
  17. file locks (-x) unlimited
  18. # 通过 ulimit -n xxx 来修改最大打开文件数不影响之前打开的文件以及只对当前shell有影响
  19. gauss@gauss-XPS-15-9570:~$ ulimit -n 5
  20. gauss@gauss-XPS-15-9570:~$ ls
  21. anaconda3 baidunetdisk document grapheory-0.0.1-SNAPSHOT.jar mok.der program snap SunloginRemote 图片 音乐
  22. AnyDesk baidunetdiskdownload download java_error_in_IDEA_3461.log mok.priv share software workspace 文档 桌面
  23. gauss@gauss-XPS-15-9570:~$ ulimit -n 4
  24. gauss@gauss-XPS-15-9570:~$ ls
  25. -bash: start_pipeline: 进程组管道: 打开的文件过多
  26. anaconda3 baidunetdisk document grapheory-0.0.1-SNAPSHOT.jar mok.der program snap SunloginRemote 图片 音乐
  27. AnyDesk baidunetdiskdownload download java_error_in_IDEA_3461.log mok.priv share software workspace 文档 桌面
  28. # 以上可以看出,当ulimit -n 5 时,ls正常,但是ulimit -n 4 时就不行。
  29. # 是因为ls进程默认打开的有4个文件,标准输入、标准输出、标准错误输出和255
  30. gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ ls /proc/$$/fd
  31. 0 1 2 255

二. 实现从一台机器rsync一个文件到另一个文件不需要输入密码的功能。如何创造两台主机,如果有困难的可以找我们要一台云主机,助教这边分配一个临时的账号。实现这个功能。

# 实现rsync的无密码传输,基本思路是用一对公私钥来代替帐户密码,实现ssh连接时的认证
# 生成公私钥的过程省略了(配置git生成过)
# 将公钥拷贝到远程机器,然后执行 ssh jll@94.191.10.248 发现不用输入密码了
gauss@gauss-XPS-15-9570:~$ ssh-copy-id -i .ssh/id_rsa.pub jll@94.191.10.248
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
jll@94.191.10.248's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'jll@94.191.10.248'"
and check to make sure that only the key(s) you wanted were added.

'

# 本地及其开始同步数据
gauss@gauss-XPS-15-9570:~/workspace/eightFriends$ rsync -avz -e ssh /home/gauss/workspace/eightFriends/task/ jll@94.191.10.248:/home/jll/workspace/
sending incremental file list
created directory /home/jll/workspace
./
Linux大神之路(2)(1).docx
Linux大神之路.docx
Linux铁血训练营每周作业考试 (1).docx
Linux铁血训练营每周作业考试.docx

sent 317,777 bytes  received 137 bytes  211,942.67 bytes/sec
total size is 332,270  speedup is 1.05

# 远程主机查看文件以及同步上去了
jll@VM-0-5-ubuntu:~$ ls workspace/
Linux大神之路(2)(1).docx  Linux大神之路.docx  Linux铁血训练营每周作业考试 (1).docx  Linux铁血训练营每周作业考试.docx

三. 如何证明自己配置的114.114.114.114这个dns是正确工作的?

# cat /etc/resolv.conf

# 通过nslookup查询DNS的记录,查看域名解析是否正常
gauss@gauss-XPS-15-9570:~$ nslookup www.baidu.com
Server:        114.114.114.114
Address:    114.114.114.114#53

Non-authoritative answer:
www.baidu.com    canonical name = www.a.shifen.com.
Name:    www.a.shifen.com
Address: 14.215.177.38
Name:    www.a.shifen.com
Address: 14.215.177.39

# dig命令可以跟踪整个解析流程
gauss@gauss-XPS-15-9570:~$ dig www.baidu.com +trace

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> www.baidu.com +trace
;; global options: +cmd
.            589    IN    NS    m.root-servers.net.
.            589    IN    NS    d.root-servers.net.
.            589    IN    NS    a.root-servers.net.
.            589    IN    NS    h.root-servers.net.
.            589    IN    NS    f.root-servers.net.
.            589    IN    NS    g.root-servers.net.
.            589    IN    NS    j.root-servers.net.
.            589    IN    NS    l.root-servers.net.
.            589    IN    NS    i.root-servers.net.
.            589    IN    NS    b.root-servers.net.
.            589    IN    NS    e.root-servers.net.
.            589    IN    NS    c.root-servers.net.
.            589    IN    NS    k.root-servers.net.
;; Received 239 bytes from 114.114.114.114#53(114.114.114.114) in 103 ms

com.            172800    IN    NS    b.gtld-servers.net.
com.            172800    IN    NS    f.gtld-servers.net.
com.            172800    IN    NS    a.gtld-servers.net.
com.            172800    IN    NS    l.gtld-servers.net.
com.            172800    IN    NS    c.gtld-servers.net.
com.            172800    IN    NS    e.gtld-servers.net.
com.            172800    IN    NS    m.gtld-servers.net.
com.            172800    IN    NS    d.gtld-servers.net.
com.            172800    IN    NS    h.gtld-servers.net.
com.            172800    IN    NS    j.gtld-servers.net.
com.            172800    IN    NS    i.gtld-servers.net.
com.            172800    IN    NS    k.gtld-servers.net.
com.            172800    IN    NS    g.gtld-servers.net.
com.            86400    IN    DS    30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.            86400    IN    RRSIG    DS 8 1 86400 20200506050000 20200423040000 48903 . Enqd4bffSJHlv8mqHcAptS9+fHo3cg6vCIQgrOZ3aBfx2nG4CjS27iEG 6u6NsPfcKVrz7RoU2xDtDMNJOcMBJdJe/lGNeo14N69SM0/MV2Z8wZBD HRPd2Y8Z1nyc7EnDbkFzuWV5G6vafaQa4KTQpG6jGOPIQpYESNiinxfy 0QQWUJELvjSOideCPqQcug2P2Pln7BzWiqFSg6I8d1h44349LsXcbr5W zJwZQJKLoDd0ysyGl5Bq3UZgfWYvTJFmmZ/OwKYT4QQ4BE0MtbVwae8X 9yI6d9jENsz+eebEEtxLt6o/LNQb3PdNhUH1PC1pxfHiEiNyYUcvbJdf Flgntg==
;; Received 1204 bytes from 192.36.148.17#53(i.root-servers.net) in 60 ms

baidu.com.        172800    IN    NS    ns2.baidu.com.
baidu.com.        172800    IN    NS    ns3.baidu.com.
baidu.com.        172800    IN    NS    ns4.baidu.com.
baidu.com.        172800    IN    NS    ns1.baidu.com.
baidu.com.        172800    IN    NS    ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A  NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20200427045033 20200420034033 39844 com. BDAWMm4AsSRfrBwOXhNN8ihw++J2UkhEk8A6LeSIz1llDs5kt0CcOqTM OK1txlQNr3N0k1RTBW/hkEZ1mxjIHF2GARt/hpO43ILPBVs/vhKAKCKh A96XJG+NzN0t/heB6mFNASKAcmVdfT5a0tVkmmzhGktDp5ECdZAIFRhZ 8y6jxsUhGP7ZiN1AfFBi1cWeSth5FW4Btpy9RffVKg5lIA==
HPVUNU64MJQUM37BM3VJ6O2UBJCHOS00.com. 86400 IN NSEC3 1 1 0 - HPVVN3Q5E5GOQP2QFE2LEM4SVB9C0SJ6  NS DS RRSIG
HPVUNU64MJQUM37BM3VJ6O2UBJCHOS00.com. 86400 IN RRSIG NSEC3 8 2 86400 20200430042237 20200423031237 39844 com. kl8q9dH0aM3ZCG2Lkl7qH/3+O4y1llGAkWeA4UsjPNz3TIvBBOS9/mN7 iyRf5AclNAAIksg9hRmpqt/SCiqNFxSAQz8LD8NGouw4+01jE544MqsU zpecuDSPlW1Yvm+HR54L5xBFkwAp1+slgzNqg1JFewyQ+ROBoEOXf9dz opZ0vMDzgQeuu33o0zJ6twx0YzyC8jiHSK7mEp4dCkbkvQ==
;; Received 761 bytes from 192.5.6.30#53(a.gtld-servers.net) in 328 ms

www.baidu.com.        1200    IN    CNAME    www.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns5.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns1.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns2.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns4.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns3.a.shifen.com.
;; Received 239 bytes from 14.215.178.80#53(ns4.baidu.com) in 40 ms

四. 在github上创建一个自己的账号,创建一个自己的项目data。并实现如果动作

gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github$ mkdir data
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github$ cd data/
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ ls
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo "#data" >> README.md
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git init
已初始化空的 Git 仓库于 /home/gauss/workspace/eightFriends/github/data/.git/
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add README.md
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m "1st
 commit"
[master (根提交) b3622ce] 1st commit
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git remote add origin git@github.com:gauss1314/data.git
  1. 假定项目当前目录是/data,将这个项目创建在/data目录下。在data下创建一个目录work(/data/work),在work目录下创建一个文件readme,并在这个文件中写入 readme version1.0
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ mkdir work
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo "readme version1.0" >> work/readme
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add .
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m "1"
    [master a33b4e7] 1
    1 file changed, 1 insertion(+)
    create mode 100644 work/readme
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push
    对象计数中: 4, 完成.
    Delta compression using up to 8 threads.
    压缩对象中: 100% (2/2), 完成.
    写入对象中: 100% (4/4), 323 bytes | 323.00 KiB/s, 完成.
    Total 4 (delta 0), reused 0 (delta 0)
    To github.com:gauss1314/data.git
    b3622ce..a33b4e7  master -> master
    
  1. 创建一个目录src,在src目录下创建一个文件 hello_world.c,并在这个文件中写入src version1.0,写完后,对整个项目打一个tag 1.0

    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ mkdir src
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo "src version1.0" >> src/hello_word.c
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add src/*
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m "2"
    [master 45bad3a] 2
    1 file changed, 1 insertion(+)
    create mode 100644 src/hello_word.c
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push
    对象计数中: 4, 完成.
    Delta compression using up to 8 threads.
    压缩对象中: 100% (2/2), 完成.
    写入对象中: 100% (4/4), 353 bytes | 353.00 KiB/s, 完成.
    Total 4 (delta 0), reused 0 (delta 0)
    To github.com:gauss1314/data.git
    a33b4e7..45bad3a  master -> master
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git tag tag1.0
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push origin tag1.0
    Total 0 (delta 0), reused 0 (delta 0)
    To github.com:gauss1314/data.git
    * [new tag]         tag1.0 -> tag1.0
    
  2. 修改hello_world.c 并在文件中把 src version1.0 改为 src version 2.0

    # 其实这里可以不必切分支直接修改然后push就行,不过我看到下一题有check in,就想这切分支然后merge
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git checkout -b "changeHelloWorld"
    切换到一个新分支 'changeHelloWorld'
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo "src version2.0" > src/hello_word.c
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ cat src/hello_word.c 
    src version2.0
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add .
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m "changeHelloWordFrom1.0To2.0"
    [changeHelloWorld 0f99f5d] changeHelloWordFrom1.0To2.0
    1 file changed, 1 insertion(+), 1 deletion(-)
    
  3. 将hello_world.c check in 到主分支(master)上。

    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git checkout master
    切换到分支 'master'
    您的分支与上游分支 'origin/master' 一致。
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git merge changeHelloWorld 
    更新 45bad3a..0f99f5d
    Fast-forward
    src/hello_word.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ cat src/hello_word.c 
    src version2.0
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push
    对象计数中: 4, 完成.
    Delta compression using up to 8 threads.
    压缩对象中: 100% (2/2), 完成.
    写入对象中: 100% (4/4), 374 bytes | 374.00 KiB/s, 完成.
    Total 4 (delta 0), reused 0 (delta 0)
    To github.com:gauss1314/data.git
    45bad3a..0f99f5d  master -> master
    
  4. 此时从另外一个机器,或者本机另一个目录取(/test)当前主分支的文件,看看readme和hello_world.c里面都是什么?

    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ cd ..
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github$ mkdir test
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github$ cd test/
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/test$ git clone git@github.com:gauss1314/data.git
    正克隆到 'data'...
    remote: Enumerating objects: 15, done.
    remote: Counting objects: 100% (15/15), done.
    remote: Compressing objects: 100% (7/7), done.
    remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
    接收对象中: 100% (15/15), 完成.
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/test$ cat data/work/readme 
    readme version1.0
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/test$ cat data/src/hello_word.c 
    src version2.0
    

    目前我们模拟了/data/ 目录是开发目录 /test/ 是测试目录

  5. 在/test/目录下取tag1.0,看看readme和hello_world.c都是什么内容,理解tag的含义
    ```shell gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/test$ cd data/ gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/test/data$ git fetch origin tag tag1.0 gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/test/data$ git tag tag1.0 gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/test/data$ git checkout tag1.0 注意:正在检出 ‘tag1.0’。

您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以通过另外 的检出分支操作丢弃在这个状态下所做的任何提交。

如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在检出命令添加 参数 -b 来实现(现在或稍后)。例如:

git checkout -b <新分支名>

HEAD 目前位于 45bad3a 2 gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/test/data$ cat src/hello_word.c src version1.0

tag是打标签,一般用于发布新版本时做一次记录,存档


7. 新创建一个目录例如叫
    /work2/
    在这个目录下clone整个项目,并且修改readme的内容为
    readme version3.0
    (原来的内容删掉) ,并且check
    in 到主分支。<br />
```shell
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github$ mkdir work2
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github$ cd work2/
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/work2$ git clone git@github.com:gauss1314/data.git
正克隆到 'data'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (7/7), done.
接收对象中: 100% (15/15), 完成.
remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/work2$ cd data/
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/work2/data$ cat work/readme 
readme version1.0
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/work2/data$ echo "readme version3.0" > work/readme 
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/work2/data$ cat work/readme 
readme version3.0
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/work2/data$ git add .
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/work2/data$ git commit -m "7"
[master 6729396] 7
 1 file changed, 1 insertion(+), 1 deletion(-)
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/work2/data$ git push
对象计数中: 4, 完成.
Delta compression using up to 8 threads.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (4/4), 300 bytes | 300.00 KiB/s, 完成.
Total 4 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:gauss1314/data.git
   0f99f5d..6729396  master -> master
  1. 然后在之前目录 /data/ 下修改readme的内容为readme version2.0 (原来的内容删掉),并且 check in 都主分支,此时会发生什么情况?如何解决冲突?
    ```shell gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo “readme version2.0” > work/readme gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add . gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m “8” [master 8518b8f] 8 1 file changed, 1 insertion(+), 1 deletion(-) gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push To github.com:gauss1314/data.git ! [rejected] master -> master (fetch first) error: 无法推送一些引用到 ‘git@github.com:gauss1314/data.git’ 提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外 提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更 提示:(如 ‘git pull …’)。 提示:详见 ‘git push —help’ 中的 ‘Note about fast-forwards’ 小节。

gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git pull remote: Enumerating objects: 7, done. remote: Counting objects: 100% (7/7), done. remote: Compressing objects: 100% (1/1), done. remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0 展开对象中: 100% (4/4), 完成. 来自 github.com:gauss1314/data 0f99f5d..6729396 master -> origin/master 自动合并 work/readme 冲突(内容):合并冲突于 work/readme 自动合并失败,修正冲突然后提交修正的结果。 gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ vim work/readme

将以下:

<<<<<<< HEAD

readme version2.0

readme version3.0

6729396f75ced00f3bf72542c35e52fc6fe925c8

改为:

readme version3.0

gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add . gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m “fix conflict” [master cd00b85] fix conflict gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push 对象计数中: 5, 完成. Delta compression using up to 8 threads. 压缩对象中: 100% (3/3), 完成. 写入对象中: 100% (5/5), 477 bytes | 477.00 KiB/s, 完成. Total 5 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:gauss1314/data.git 6729396..cd00b85 master -> master


9. 创建一个名为pub的分支(pub是发布的意思),切换到该分支,然后创建一个目录
    pub_content,在这个目录下创建一个空文件
    pub_icon,并提交到pub分支。<br />
```shell
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git checkout -b pub
切换到一个新分支 'pub'
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ mkdir pub_content
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ cd pub_content/
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data/pub_content$ touch pub_icon
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data/pub_content$ cd ..
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add .
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m "pub"
[pub 531ad67] pub
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 pub_content/pub_icon
gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push --set-upstream origin pub
对象计数中: 4, 完成.
Delta compression using up to 8 threads.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (4/4), 370 bytes | 370.00 KiB/s, 完成.
Total 4 (delta 0), reused 0 (delta 0)
To github.com:gauss1314/data.git
 * [new branch]      pub -> pub
分支 'pub' 设置为跟踪来自 'origin' 的远程分支 'pub'。
  1. 回到主分支。看到之前的目录是否可见。

    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git checkout master
    切换到分支 'master'
    您的分支与上游分支 'origin/master' 一致。
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ ls
    README.md  src  work
    # 不可见
    
  2. 如何将pub分支合并到主分支(merge)? 使得在主分支也能看到pub_content和里面的文件。

    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git merge pub
    更新 cd00b85..531ad67
    Fast-forward
    pub_content/pub_icon | 0
    1 file changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 pub_content/pub_icon
    gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ ls
    pub_content  README.md  src  work
    
  3. 在/data/目录下将文件readme 内容改成了xxx,但是又后悔了,需要重取新的readme,放弃此次修改,该怎么办?尝试你的想法,并试图找到最好的方法。 ```shell gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo “readme version3.1” > work/readme gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add . gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m “changeTo3.1” [master 5d54d1d] changeTo3.1 1 file changed, 1 insertion(+), 1 deletion(-)

当此时只是本地commit而没有push到远程的话,直接本地撤销本次commit,然后再修改即可:

gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git reset —soft HEAD~1 gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git status 位于分支 master 您的分支领先 ‘origin/master’ 共 1 个提交。 (使用 “git push” 来发布您的本地提交)

要提交的变更: (使用 “git reset HEAD <文件>…” 以取消暂存)

    修改:     work/readme

gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo “readme version3.2” > work/readme

如果此时以及push到远程了:

gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo “readme version3.2” > work/readme gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m “changeTo3.2” [master 364ce2b] changeTo3.2 1 file changed, 1 insertion(+), 1 deletion(-) gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push 对象计数中: 4, 完成. Delta compression using up to 8 threads. 压缩对象中: 100% (2/2), 完成. 写入对象中: 100% (4/4), 312 bytes | 312.00 KiB/s, 完成. Total 4 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:gauss1314/data.git cd00b85..364ce2b master -> master

此时,首先可以本地软回退,然后git stash暂存,然后硬回退,最后把stash pop出来再修改,强制提交

gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git reset —soft HEAD~1 gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ cat work/readme readme version3.2 gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git stash 保存工作目录和索引状态 WIP on master: 531ad67 pub gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ cat work/readme readme version3.0 gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git pull 更新 531ad67..364ce2b Fast-forward work/readme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git reset —hard HEAD~1 HEAD 现在位于 531ad67 pub gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git stash pop 位于分支 master 您的分支落后 ‘origin/master’ 共 1 个提交,并且可以快进。 (使用 “git pull” 来更新您的本地分支)

尚未暂存以备提交的变更: (使用 “git add <文件>…” 更新要提交的内容) (使用 “git checkout — <文件>…” 丢弃工作区的改动)

    修改:     work/readme

修改尚未加入提交(使用 “git add” 和/或 “git commit -a”) 丢弃了 refs/stash@{0} (9023600955594f75f3ea2b49614074b707715fda)

gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ echo “readme version3.3” > work/readme gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git add . gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git commit -m “changeTo3.3” [master 98e123d] changeTo3.3 1 file changed, 1 insertion(+), 1 deletion(-) gauss@gauss-XPS-15-9570:~/workspace/eightFriends/github/data$ git push —force 对象计数中: 4, 完成. Delta compression using up to 8 threads. 压缩对象中: 100% (2/2), 完成. 写入对象中: 100% (4/4), 311 bytes | 311.00 KiB/s, 完成. Total 4 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:gauss1314/data.git

  • 364ce2b…98e123d master -> master (forced update)

通过git log 查看只有 changeTo3.3 提交记录没有 changeTo3.2

```